package net.comfycastle.musicplayer;

import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.CursorAdapter;
import android.view.View;
import android.widget.TextView;

/**
 * 특정 그룹의 곡 목록을 표현하는 adapter
 * @author ricale
 *
 */
class GroupListMCAdapter extends MusicCursorAdapter {
	///////////
	//////////
	/////////   enum
	
	/** adapter와 연결된 cursor의 데이터 상태를 표시 */
	public static enum VIEWSTATE {
		/** 특정 아티스트의 곡 목록을 다루는 상태 */
		ARTIST,
		/** 특정 장르의 곡 목록을 다루는 상태 */
		GENRE,
		/** 특정 작곡가의 곡 목록을 다루는 상태 */
		COMPOSER
	} // end VIEWSTATE
	
	///////////
	//////////
	/////////   constant
	
	/** VIEWSTATE에 따라 리스트뷰 항목뷰에 부착될 데이터의 이름(태그) */
	private static final String[] adaptedTagList = new String[]	{
		MPApp.TAG_TITLEARTIST,
		MPApp.TAG_GENRE,
		MPApp.TAG_COMPOSER
	}; // end adaptedTagList

	///////////
	//////////
	/////////   variable
	
	/** 현재 adapter의 VIEWSTATE */
	private VIEWSTATE mViewMode;
	
	///////////
	//////////
	/////////   constructor
	
	/**
	 * 생성자
	 * @param context 이 객체를 생성하는 context
	 * @param cursor  데이터 cursor
	 */
	public GroupListMCAdapter(Context context, Cursor cursor) {
		this(context, R.layout.listitem_grouplist, cursor, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
	} // end GroupListMCAdapter(Context, Cursor)
	
	/**
	 * 생성자
	 * @param context 이 객체를 생성하는 context
	 * @param layout 항목뷰 레이아웃 리소스 아이디
	 * @param cursor 데이터 cursor
	 * @param flags
	 */
	public GroupListMCAdapter(Context context, int layout, Cursor cursor, int flags) {
		super(context, layout, cursor, flags);
	} // end GroupListMCAdapter(Context, int, Cursor, int)
	
	///////////
	//////////
	/////////   setter
	
	/**
	 * 현재 adpater가 다루고 있는 데이터의 종류를 설정한다.
	 * @paran viewState 정보의 종류를 구분하기 위한 상수
	 */
	public void setViewState(VIEWSTATE viewState) {
		mViewMode = viewState;
	} // end setViewMode
	
	///////////
	//////////
	/////////   callback method
	
	/**
	 * 각각의 항목 뷰에 정보들을 등록(binding)하기 위한 콜백 메소드
	 */
	@Override
	public void bindView(View view, Context context, Cursor cursor) {
		TextView tv = (TextView)view.findViewById(R.id.listitem_grouplist_main);
		tv.setText(cursor.getString(cursor.getColumnIndex(adaptedTagList[mViewMode.ordinal()])));
	} // end bindView
} // end GroupListMCAdapter